/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AdminClienten;

import Cliente.WebGestor;
import Cliente.web.WebArquivo;
import common.AdDelete;
import common.AdOnOff;
import common.Menssagem;
import common.OpSearch;
import webRMI.WebGereOperacoes;

/**
 *
 * @author ziza
 */
public class AdminOp {

    WebArquivo arquivador = null;
    WebGereOperacoes gestor = null;
    AdminArquivo adArq = null;
    WebGestor beanGere = null;

    public AdminOp(WebArquivo arquivador, WebGereOperacoes gestor, WebGestor beanGere) {
        this.arquivador = arquivador;
        this.gestor = gestor;
        this.beanGere = beanGere;
        adArq = new AdminArquivo();
        gestor.setAdArquivo(adArq);
    }

    public WebGereOperacoes getGestor() {
        return gestor;
    }

    public WebArquivo getArquivador() {
        return arquivador;
    }


    
    public WebGestor getBeanGere() {
        return beanGere;
    }

    public void setBeanGere(WebGestor beanGere) {
        this.beanGere = beanGere;
    }

    public void setArquivador(WebArquivo arquivador) {
        this.arquivador = arquivador;
    }

    public void setGestor(WebGereOperacoes gestor) {
        this.gestor = gestor;
    }

    public boolean apagaCliente(String nome) {

        if(!nome.equalsIgnoreCase("admin")){
            String []result = beanGere.searchUsers(nome);
            System.out.println("Estou no apaga cleinte e tenho clientes!!!"+result.length+"--"+result[0]);
            if(result.length<=1){
                return false;
            }
            else{
                System.out.println("Para criar objecto a apagar!!!");
                AdDelete apagar = new AdDelete(arquivador.getNickname(), nome, "Apagar");
                gestor.getEnvia().setArrayList(apagar);
                System.out.println("Enviada sms de delete!!!");
                Menssagem resposta = adArq.getRemove();
                System.out.println("R:Como esta apagar:"+resposta.getMenssagem());
                if (resposta != null) {
                    adArq.setRemove(null);
                    return true;
                } else {
                    return false;
                }
            }
        }
        else
            return false;
    }

    public String[] efectuaPesquisa(String searchString) {

        String[] bufferSeach = null;
        OpSearch search = new OpSearch(arquivador.getNickname(), searchString, "search");
        gestor.getEnvia().setArrayList(search);

        Menssagem resposta = arquivador.getSearch();
        System.out.println("--Pesquisado:"+resposta.getMenssagem());
        if (resposta != null) {
            bufferSeach = beanGere.efectuaParse(resposta.getMenssagem(), ":");
            for(int i=0; i<bufferSeach.length; i++)
                System.out.println("Buffer"+i+":"+bufferSeach[i]);
            arquivador.setSearch(null);
            return bufferSeach;
        } else {
            //Em caso de dar bode tratar
            bufferSeach[0]="";
            bufferSeach[1]="";
            return bufferSeach;
        }
    }

    public String[] verificaOnOff(String tipo) {

        String[] bufferVer = null;
        AdOnOff ver = new AdOnOff(arquivador.getNickname(), "Listar Users", tipo);
        gestor.getEnvia().setArrayList(ver);
        System.out.println("Dados de "+tipo+" enviados...");
        Menssagem resposta = adArq.getListar();
        System.out.println(" Listar "+tipo+" :"+resposta.getMenssagem());
        if (resposta != null) {
            bufferVer = beanGere.efectuaParse(resposta.getMenssagem(), ":");
            adArq.setListar(null);
            return bufferVer;
        } else {
            //Em caso de dar bode tratar
            bufferVer[0]="";
            bufferVer[1]="";
            return bufferVer;
        }
    }

//    public String[] listaInfoUser(String searchString){
//
//        OpSearch search = new OpSearch(arquivador.getNickname(), searchString, "search");
//        gestor.getEnvia().setArrayList(search);
//
//        Menssagem resposta = adArq.getInfo();
//
//        if (resposta != null) {
//            String[] bufferDet = beanGere.efectuaParse(resposta.getMenssagem(), ":");
//            adArq.setInfo(null);
//            return bufferDet;
//        } else {
//            //Em caso de dar bode tratar
//            return null;
//        }
//    }

    public String numeroTweets(){

        System.out.println("Entrei no metodo de contar tweets!");

        Menssagem numero = new Menssagem(arquivador.getNickname(), "Num");
        gestor.getEnvia().setArrayList(numero);

        Menssagem resposta = adArq.getNum();
        System.out.println("--Numero:"+resposta.getMenssagem());
        if(resposta != null){
            adArq.setNum(null);
            return (resposta.getMenssagem());
        }
        else{
            //Em caso de dar bode tratar
            return null;
        }
    }

    public String [] recolheTodosDetalhes(String utilizador, String tipo){

        //Recolher Detalhes
        if("detalhes".equalsIgnoreCase(tipo)){
            String []detalhes = beanGere.getDetails(utilizador);
            return detalhes;
        }

        //Following
        if("following".equalsIgnoreCase(tipo)){
            arquivador.setNickname(utilizador);
            String []following = beanGere.seeFollowing();
            arquivador.setNickname("admin");
            return following;
        }

        //Followers
        if("followers".equalsIgnoreCase(tipo)){
            arquivador.setNickname(utilizador);
            String []followers = beanGere.seeFollowers();
            arquivador.setNickname("admin");
            return followers;
        }

        //Ver meus tweets
        if("meusTwee".equalsIgnoreCase(tipo)){
            String []meusTweets = recolheMeusTweets(utilizador);
            return meusTweets;
        }

        return null;
    }

    public String [] recolheMeusTweets(String utilizador){

        Menssagem sms_own = new Menssagem(utilizador, "Minhas");
        gestor.getEnvia().setArrayList(sms_own);

        Menssagem resposta = adArq.getMyTweets();
        System.out.println("Meus Tweets:"+resposta.getMenssagem());
        if(resposta!=null){
            String []bufferMeus = beanGere.efectuaParse(resposta.getMenssagem(), "#");
            adArq.setMyTweets(null);
            return bufferMeus;
        }
        else{
            //Tetar de erros
            return null;
        }
    }
}
